#pragma once
#include<iostream>
#include<deque>

using namespace std;

namespace qiangsir
{
	template<class T,class contaner = deque<T>>
	class queue
	{
	 public:
		 void push(const T& val)
		 {
			 _con.push_back(val);
		 }
		 void pop()
		 {
			 _con.pop_front();
		 }
		 T& top()
		 {
			 return _con.front();
		 }
		 bool empty()
		 {
			 return _con.empty();
		 }
		 size_t size()
		 {
			 return _con.size();
		 }
	 private:
		contaner _con;
	};
	void test()
	{
		queue<int> q;
		q.push(1);
		q.push(2);
		q.push(3);
		q.push(4);
		q.push(5);
		while (!q.empty())
		{
			cout << q.top() << " ";
			q.pop();
		}
	}
}